﻿using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using SqlSugarWebApi.DataContext.Services;
using SqlSugarWebApi.Entity.Entities;

namespace SqlSugarWebApi.Controllers
{
    /// <summary>
    /// 用户详情控制器
    /// </summary>
    [ApiController]
    [Route("api/[controller]/[Action]")]
    //[Authorize(Policy = "SystemOrAdmin")]
    public class UserController : ControllerBase
    {
        private readonly IUserService _IUserService;
        public UserController(IUserService iUserService)
        {
            _IUserService = iUserService;
        }

        /// <summary>
        /// 查询获取所有的 admin 用户
        /// </summary>
        /// <returns></returns>
        [HttpGet("GetAllAdmin")]
        public async Task<List<Admin>> GetAllAdmin()
        {
            List<Admin> list_admin = await _IUserService.GetAllAdmins();
            return list_admin;
        }

        /// <summary>
        /// 通过用户名获取指定用户
        /// </summary>
        /// <param name="adminName"></param>
        /// <returns></returns>
        [HttpGet("GetAdminByName")]
        public async Task<Admin> GetAdminByName(String adminName)
        {
            Admin admin = await _IUserService.GetAdminByName(adminName);
            return admin;
        }

        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="admin"></param>
        /// <returns></returns>
        [HttpPost("InsertEntity")]
        public async Task<int> InsertEntity(Admin admin)
        {
            int result = await _IUserService.InsertEntity(admin);
            return result;
        }

        ////增加
        //[HttpPost]
        //public String addUser(string name, string pwd, String sex)
        //{
        //    Guid guid = Guid.NewGuid();
        //    try
        //    {
        //        isc.BeginTran();//开启事务
        //        var user = new Admin { AdminName = name, AdminPassword = pwd };
        //        int i = isc.Insertable<Admin>(user).ExecuteCommand();

        //        if (i > 0)
        //        {
        //            isc.CommitTran();//提交事务
        //            return "ok";

        //        }
        //        else
        //        {
        //            return "新增失败";
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        isc.RollbackTran();//回滚
        //        return "添加数据发生了错误：" + ex.Message.ToString();
        //    }
        //}

        ////修改 异步
        //[HttpPost]
        //public async Task<String> updateUserById(int id, String? no, String? name, String? age, String? sex)
        //{
        //    try
        //    {
        //        await isc.BeginTranAsync();//异步事务
        //        var user = await isc.Queryable<Admin>().Where(s => s.AdminID == id).FirstAsync();
        //        if (user == null)
        //        {
        //            return "未找到指定数据";
        //        }


        //        int i = await isc.Updateable<Admin>(user).WhereColumns(u => u.AdminID).ExecuteCommandAsync();//异步修改,必须给个WhereColumns(u => [字段])，字段最好给不会去修改的，如果给的字段正好参与修改，则修改会失效。

        //        if (i > 0)
        //        {
        //            await isc.CommitTranAsync();//异步提交
        //            return "ok";

        //        }
        //        else
        //        {
        //            return "未找到指定数据";
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        await isc.RollbackTranAsync();//回滚
        //        return "修改数据发生了错误：" + ex.Message.ToString();
        //    }
        //}

        ////删除 UseTran 自动回滚
        //[HttpPost]
        //public String delUserById_01(int id)
        //{
        //    try
        //    {
        //        using (var tran = isc.UseTran())
        //        {

        //            int i = isc.Deleteable<Admin>().Where(s => s.AdminID == id).ExecuteCommand();
        //            if (i > 0)
        //            {
        //                tran.CommitTran();//需要手动提交
        //                return "ok";

        //            }
        //            else
        //            {
        //                return "未找到指定数据";
        //            }
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        return "删除数据发生了错误：" + ex.Message.ToString();
        //    }
        //}

        ////删除  自动提交、回滚
        //[HttpPost]
        //public String delUserById_02(int id)
        //{
        //    int i = 0;
        //    var result = isc.UseTran(() =>//自动提交
        //    {
        //        i = isc.Deleteable<Admin>().Where(s => s.AdminID == id).ExecuteCommand();
        //    });

        //    if (result.IsSuccess)
        //    {
        //        if (i > 0)
        //        {
        //            return "ok";
        //        }
        //        else
        //        {
        //            return "未找到指定数据";
        //        }
        //    }
        //    else
        //    {
        //        return "fail";
        //    }
        //}

        ////删除 UseTranAsync异步 自动提交、回滚
        //[HttpPost]
        //public async Task<String> delUserById_03(int id)
        //{
        //    int i = 0;
        //    var result = await isc.UseTranAsync(async () =>//自动提交
        //    {
        //        i = await isc.Deleteable<Admin>().Where(s => s.AdminID == id).ExecuteCommandAsync();
        //        //throw new Exception("");//走失败
        //    });

        //    if (result.IsSuccess)
        //    {
        //        if (i > 0)
        //        {
        //            return "ok";
        //        }
        //        else
        //        {
        //            return "未找到指定数据";
        //        }
        //    }
        //    else
        //    {
        //        return "fail";
        //    }
        //}
    }
}
